#ifndef PLC2LLVM_STRATEGYFACTORY_H
#define PLC2LLVM_STRATEGYFACTORY_H

#include <map>
#include <plc2llvm/Visitor/strategy/Strategy.h>

class StrategyFactory {
private:
    StrategyFactory();
    static StrategyFactory* factory;
    std::map<int, Strategy*> strategies;

public:
    ~StrategyFactory();
    static StrategyFactory* getFactory();
    static void registerStrategy(int ruleIndex, Strategy* strategy);
    static Strategy* getStrategy(int ruleIndex);
};


#endif
